class User {
  // 用户接口
  static getList(query, _req, res) {
    let sql = "select * from user";
    query(sql, [], (results) => {
      res.status(200).json({ code: 200, data: results, msg: "成功" });
    });
  }
  // 添加用户
  static addUser(query, req, res) {
    const params = req.body;
    const ret = {};
    const validateParam = (paramName, requiredMessage) => {
      if (!params[paramName]) {
        ret.code = 501;
        ret.data = null;
        ret.msg = requiredMessage;
        res.json(ret);
        return true; // 表示验证失败，已处理并返回
      }
      return false; // 表示验证通过
    }
    if (validateParam("name", "请传递用户名")) return;
    if (validateParam("sex", "请传递性别")) return;
    if (validateParam("money", "请传递身价")) return;
    if (validateParam("password", "请传递密码")) return;
    let sql = "insert into user(name,sex,password,money) values(?,?,?,?)";
    query(
      sql,
      [params.name, params.sex, params.password, params.money],
      (results) => {
        if (!results) {
          ret.code = 500;
          ret.data = null;
          ret.msg = results;
          return;
        } else {
          ret.code = 200;
          ret.data = {
            name: params.name,
            sex: params.sex,
            money: params.money,
          };
          ret.msg = "添加成功";
        }
        res.json(ret);
      }
    );
  }
  // 修改用户
  static updateUser(query, req, res) {
    const {id,name,sex,money,password} = req.body;
    if (!id) {
      res.status(501).json({ code: 501, data: null, msg: "请传递用户ID" });
      return;
    }
    // 初始化一个空数组来存储要更新的字段和值
    const updates = [];
     const escapeValue = (value) => value.replace(/'/g, "''");
    // 检查每个可能的更新字段，并添加到数组中
    if (name) {
      updates.push(`name = '${escapeValue(name)}'`); // 对单引号进行转义以防 SQL 注入
    }
    if (sex) {
      updates.push(`sex = '${escapeValue(sex)}'`); // 同样对单引号进行转义
    }
    if (money !== undefined) {
      updates.push(`money = ${money}`); // 假设 money 是数字，不需要引号
    }
    if (password) {
      updates.push(`password = '${escapeValue(password)}'`); // 对密码进行转义
    }
    // 如果没有要更新的字段，则不执行 SQL 语句（可选）
    if (updates.length === 0) {
      res
        .status(501)
        .json({ code: 400, data: null, msg: "修改失败,没有做任何修改" });
      return; // 或者其他适当的处理
    }
    // 构建 SQL 语句
    const sql = `UPDATE user SET ${updates.join(", ")} WHERE id = ?`;
    query(sql, [id], (results) => {
      if (!results) {
        res.status(501).json({ code: 501, data: null, msg: "修改失败" });
        return;
      } else {
        res.status(200).json({ code: 200, data: params, msg: "修改成功" });
      }
    });
  }
  // 删除用户接口
  static deleteUser(query, req, res) {
    const { id } = req.body;
    if (!id) {
      res.status(501).json({ code: 501, data: null, msg: "请传递用户ID" });
      return;
    }
    const sql = `DELETE FROM user WHERE id= ?`;
    query(sql, [id], (results) => {
      if (!results) {
        res.status(501).json({ code: 501, data: null, msg: "删除失败" });
      } else if (results.affectedRows == 0) {
        res.status(500).json({ code: 500, data: params, msg: "没有这条数据" });
      } else {
        res.status(200).json({ code: 200, data: params, msg: "删除成功" });
      }
    });
  }
}
module.exports = User;
